package modelo;

import java.util.Collection;
import java.util.LinkedList;

import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;

public class ArmadorDeRadioTests {

	private ArmadorDeRadio armador_radio;
	
	@Before
	
	public void setUp(){
		
		armador_radio = new ArmadorDeRadio();
	
	}

	@Test
	
	public void testSiLaPosicionCentralEsFila2Columna2LasPosicionesDentroDeUnRadio1Son9(){
		
		Coordenada posicion = new Coordenada(2,2);
		
		Collection<Coordenada> posiciones_dentro_del_radio = armador_radio.armarRadio(posicion,1);
	
		Assert.assertEquals(posiciones_dentro_del_radio.size(),9);
		
	}
	

	@Test
	
	public void testSiLaPosicionCentralEsFila11Columna6LasPosicionesDentroDeUnRadio2Son25(){
		
		Coordenada posicion = new Coordenada(6,11);
		
		Collection<Coordenada> posiciones_dentro_del_radio = armador_radio.armarRadio(posicion,2);
		
		Assert.assertEquals(posiciones_dentro_del_radio.size(),25);
		
	}
	

	
	@Test
	
	public void testSiLaPosicionCentralEsFila2Columna2YElRadio0HaySolo1PosicionDentroDelRadio(){
		
		Coordenada posicion = new Coordenada(2,2);
		
		Collection<Coordenada> posiciones_dentro_del_radio = armador_radio.armarRadio(posicion,0);
		
		Assert.assertEquals(posiciones_dentro_del_radio.size(),1);


	}
	
	@Test
	
	public void testSiLaPosicionCentralEsFila2Columna2YElRadio0LaUnicaPosicionEnElRadioEsEllaMisma(){
		
		Coordenada posicion = new Coordenada(2,2);
		
		LinkedList<Coordenada> posiciones_dentro_del_radio = (LinkedList<Coordenada>) armador_radio.armarRadio(posicion,0);
		
		Assert.assertEquals(posicion.getX(),posiciones_dentro_del_radio.get(0).getX());
		
		Assert.assertEquals(posicion.getY(),posiciones_dentro_del_radio.get(0).getY());

	}

	
	@Test
	
	public void testSiLaPosicionCentralEsFila2Columna2LaPrimerPosicionEnElRadioEsLaFila1Columna1(){
		
		Coordenada posicionCentral = new Coordenada(2,2);
		
		LinkedList<Coordenada> posiciones_dentro_del_radio = (LinkedList<Coordenada>) armador_radio.armarRadio(posicionCentral,1);
		
		Coordenada primerPosicion = posiciones_dentro_del_radio.get(0);
		
		Assert.assertEquals(primerPosicion.getX(),1);
		
		Assert.assertEquals(primerPosicion.getY(),1);
		
	}	
	
	@Test
	
	public void testSiLaPosicionCentralEsFila2Columna2LaSegundaPosicionEnElRadioEsLaFila2Columna1(){
		
		Coordenada posicionCentral = new Coordenada(2,2);
		
		LinkedList<Coordenada> posiciones_dentro_del_radio = (LinkedList<Coordenada>) armador_radio.armarRadio(posicionCentral,1);
		
		Coordenada segundaPosicion = posiciones_dentro_del_radio.get(1);
		
		Assert.assertEquals(segundaPosicion.getX(),1);
		
		Assert.assertEquals(segundaPosicion.getY(),2);
		
	}	
	
	@Test
	
	public void testSiLaPosicionCentralEsFila2Columna2LaTerceraPosicionEnElRadioEsLaFila3Columna1(){
		
		Coordenada posicionCentral = new Coordenada(2,2);
		
		LinkedList<Coordenada> posiciones_dentro_del_radio = (LinkedList<Coordenada>) armador_radio.armarRadio(posicionCentral,1);
		
		Coordenada tercerPosicion = posiciones_dentro_del_radio.get(2);
		
		Assert.assertEquals(tercerPosicion.getX(),1);
		
		Assert.assertEquals(tercerPosicion.getY(),3);
		
	}	

	@Test
	
	public void testSiLaPosicionCentralEsFila2Columna2LaUltimaPosicionEnElRadioEsLaFila3Columna3(){
		
		Coordenada posicionCentral = new Coordenada(2,2);
		
		LinkedList<Coordenada> posiciones_dentro_del_radio = (LinkedList<Coordenada>) armador_radio.armarRadio(posicionCentral,1);
		
		Coordenada ultimaPosicion = posiciones_dentro_del_radio.get(8);
		
		Assert.assertEquals(ultimaPosicion.getX(),3);
		
		Assert.assertEquals(ultimaPosicion.getY(),3);
		
	}	
}
